home *** CD-ROM | disk | FTP | other *** search
/ Internet Tools (InfoMagic) / Internet Tools.iso / news / moderating / atari-groups.shar.Z / atari-groups.shar
Internet Message Format  |  1992-06-05  |  54KB

  1. From Steven.Grimm@eng.sun.com Sat Jun  6 00:46:17 1992
  2. Received: from Sun.COM by sparky.IMD.Sterling.COM (5.65c/IDA-1.4.4)
  3.     id AA11600; Sat, 6 Jun 1992 00:46:05 -0500
  4. Return-Path: <Steven.Grimm@eng.sun.com>
  5. Received: from Eng.Sun.COM (zigzag-bb.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.1)
  6.     id AA29251; Fri, 5 Jun 92 22:44:15 PDT
  7. Received: from twitterpater.Eng.Sun.COM by Eng.Sun.COM (4.1/SMI-4.1)
  8.     id AA10027; Fri, 5 Jun 92 22:44:21 PDT
  9. Received: by twitterpater.Eng.Sun.COM (5.0/SMI-SVR4)
  10.     id AA06951; Sat, 6 Jun 92 05:44:33 GMT
  11. Date: Sat, 6 Jun 92 05:44:33 GMT
  12. From: Steven.Grimm@eng.sun.com (Steven Grimm)
  13. Message-Id: <9206060544.AA06951@twitterpater.Eng.Sun.COM>
  14. To: kent@imd.sterling.com
  15. Subject: Re: Moderator Tools Archive
  16. Content-Length: 53029
  17. Status: OR
  18.  
  19. Here you go:
  20.  
  21. --- cut here ("atari-groups.shar") ---
  22. This file contains the tools used to moderate comp.binaries.atari.st and
  23. comp.sources.atari.st.  Some of them may be generally useful to other
  24. moderators, especially the "tweak" program.
  25.  
  26. See the README file for details.
  27.  
  28. #!/bin/sh
  29. # shar:    Shell Archiver  (v1.22)
  30. #
  31. #    Run the following text with /bin/sh to create:
  32. #      Changing.volume
  33. #      Header.binaries
  34. #      Header.binaries.multi
  35. #      Header.sources
  36. #      Header.sources.multi
  37. #      Index.binaries.h
  38. #      Index.sources.h
  39. #      Intro.binaries
  40. #      Intro.sources
  41. #      Makefile
  42. #      README
  43. #      autoindex-intro
  44. #      dehex.c
  45. #      fcat.c
  46. #      tweak.c
  47. #      ucat.c
  48. #      newvol
  49. #      nodocs.b
  50. #      post
  51. #      sedfile
  52. #      seq.binaries
  53. #      seq.sources
  54. #      unpack.ms
  55. #      update-autoindex
  56. #      volume
  57. #      wrong-group
  58. #
  59. sed 's/^X//' << 'SHAR_EOF' > Changing.volume &&
  60. XRun newvol sources or newvol binaries
  61. Xpost intro/unpacking instructions/index
  62. X
  63. Xnote:    sources and binaries temp directories must be called "sources" and
  64. X    "binaries" or tweak and newvol will mess up.
  65. SHAR_EOF
  66. chmod 0600 Changing.volume || echo "restore of Changing.volume fails"
  67. sed 's/^X//' << 'SHAR_EOF' > Header.binaries &&
  68. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  69. XNewsgroups: comp.binaries.atari.st
  70. XSubject: v%Vi%I: %t -- %d
  71. XMessage-ID: %m
  72. XReply-To: %s
  73. XKeywords: %k
  74. XApproved: koreth@twitterpater.eng.sun.com
  75. X
  76. XSubmitted-by: %s
  77. XPosting-number: Volume %v, Issue %i
  78. XArchive-name: %t
  79. X
  80. SHAR_EOF
  81. chmod 0600 Header.binaries || echo "restore of Header.binaries fails"
  82. sed 's/^X//' << 'SHAR_EOF' > Header.binaries.multi &&
  83. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  84. XNewsgroups: comp.binaries.atari.st
  85. XSubject: v%Vi%I: %t -- %d  part%P/%N
  86. XMessage-ID: %m
  87. XReferences: %r
  88. XReply-To: %s
  89. XKeywords: %k
  90. XApproved: koreth@twitterpater.eng.sun.com
  91. X
  92. XSubmitted-by: %s
  93. XPosting-number: Volume %v, Issue %i
  94. XArchive-name: %t/part%P
  95. X
  96. SHAR_EOF
  97. chmod 0600 Header.binaries.multi || echo "restore of Header.binaries.multi fails"
  98. sed 's/^X//' << 'SHAR_EOF' > Header.sources &&
  99. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  100. XNewsgroups: comp.sources.atari.st
  101. XSubject: v%Vi%I: %t -- %d
  102. XMessage-ID: %m
  103. XReply-To: %s
  104. XKeywords: %k
  105. XApproved: koreth@twitterpater.eng.sun.com
  106. X
  107. XSubmitted-by: %s
  108. XPosting-number: Volume %v, Issue %i
  109. XArchive-name: %t
  110. X
  111. SHAR_EOF
  112. chmod 0600 Header.sources || echo "restore of Header.sources fails"
  113. sed 's/^X//' << 'SHAR_EOF' > Header.sources.multi &&
  114. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  115. XNewsgroups: comp.sources.atari.st
  116. XSubject: v%Vi%I: %t -- %d  part%P/%N
  117. XMessage-ID: %m
  118. XReferences: %r
  119. XReply-To: %s
  120. XKeywords: %k
  121. XApproved: koreth@twitterpater.eng.sun.com
  122. X
  123. XSubmitted-by: %s
  124. XPosting-number: Volume %v, Issue %i
  125. XArchive-name: %t/part%P
  126. X
  127. SHAR_EOF
  128. chmod 0600 Header.sources.multi || echo "restore of Header.sources.multi fails"
  129. sed 's/^X//' << 'SHAR_EOF' > Index.binaries.h &&
  130. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  131. XSubject: v17INF2: Index of previously-published binaries
  132. XNewsgroups: comp.binaries.atari.st,comp.sys.atari.st
  133. XApproved: koreth@twitterpater.eng.sun.com
  134. XExpires: 60days
  135. X
  136. XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
  137. XPosting-number: Volume 17, Info 2
  138. XArchive-name: Index
  139. X
  140. XFiles listed below can be requested from the Atari archive server,
  141. Xarchive-server@twitterpater.eng.sun.com.  Send it a mail message containing
  142. Xthe word "help" for information.
  143. X
  144. X[file list deleted]
  145. SHAR_EOF
  146. chmod 0600 Index.binaries.h || echo "restore of Index.binaries.h fails"
  147. sed 's/^X//' << 'SHAR_EOF' > Index.sources.h &&
  148. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  149. XSubject: v05INF2: Index of previously-published sources
  150. XNewsgroups: comp.sources.atari.st,comp.sys.atari.st
  151. XApproved: koreth@twitterpater.eng.sun.com
  152. XExpires: 60days
  153. X
  154. XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
  155. XPosting-number: Volume 5, Info 2
  156. XArchive-name: Index
  157. X
  158. X[file list deleted]
  159. SHAR_EOF
  160. chmod 0600 Index.sources.h || echo "restore of Index.sources.h fails"
  161. sed 's/^X//' << 'SHAR_EOF' > Intro.binaries &&
  162. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  163. XSubject: v17INF1: Introduction to comp.binaries.atari.st
  164. XNewsgroups: comp.binaries.atari.st,comp.sys.atari.st
  165. XApproved: koreth@twitterpater.eng.sun.com
  166. XExpires: 120days
  167. X
  168. XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
  169. XPosting-number: Volume 17, Info 1
  170. XArchive-name: intro
  171. X
  172. XThis is the first of three introductory articles about comp.binaries.atari.st.
  173. XThis one describes how to submit binaries to the newsgroup.  A companion
  174. Xarticle lists all previously-published binaries, and a third article explains
  175. Xhow to retrieve and unpack binaries posted by others.
  176. X
  177. XI am always looking for suggestions on how to improve the usefulness
  178. Xof the newsgroup, and can be contacted as listed below.
  179. X
  180. X-- Steven Grimm
  181. X   koreth@twitterpater.eng.sun.com
  182. X
  183. X--------------------
  184. X
  185. XSubject: Submitting binaries for publication
  186. X
  187. XItems intended for posting or queries and problem notes should be sent to
  188. Xatari-binaries@twitterpater.eng.sun.com. If you are on a UUCP-only site, you
  189. Xcan send them to {backbone}!sun!twitterpater.eng!atari-binaries.  Note that
  190. Xcomp.binaries.atari.st is not the correct place to ask general questions
  191. Xor to ask, "Does anyone have software that does X?"  Post such requests to
  192. Xcomp.sys.atari.st or comp.sys.atari.st.tech.
  193. X
  194. XIf you want verification of arrival, so say in a cover note, or at the
  195. Xbeginning of your submission, if it is small.  I try to verify that a
  196. Xprogram works, and if I can't get it to work, I may hold up posting it
  197. Xfor a couple of days.  Please note that, except in rare cases, software
  198. Xwithout documentation will not be published. The backlog from receipt
  199. Xto posting varies from one to four weeks depending mostly on the set
  200. Xof submissions currently in my queue.
  201. X
  202. XIf you are submitting both sources and binaries, PLEASE send the two
  203. Xseparately.  If I have to separate your sources from your binaries by
  204. Xhand, your submission will most likely sit on the back burner for a
  205. Xwhile.
  206. X
  207. XPlease include a description of your program at the top of your article.
  208. XLook at old issues of comp.binaries.atari.st for examples of the sorts
  209. Xof descriptions I'm looking for.  I don't write the descriptions at the
  210. Xtops of the articles; what you see is what the submitters gave me.
  211. X
  212. XAlso, as of volume 8, I will only accept binaries packed with an archiver
  213. Xfor which source code is widely available.  For the time being, this means
  214. Xarc, zoo (including 2.1), and lharc.  If you want to use a nifty new archiver,
  215. Xmake the source code available to the public (posting to comp.sources.atari.st
  216. Xis fine.)  I reserve the right to repack binaries with another archiver if
  217. Xthe other archiver saves a significant amount of space, or has other
  218. Xadvantages.
  219. X
  220. XIf you're submitting a demo of a commercial program, or a shareware program,
  221. Xplease keep the amount of advertising to an absolute minimum.  The net
  222. Xgods become angry when people try to use the net as a free advertising
  223. Xmedium, and I'd like to keep comp.binaries.atari.st out of trouble.  If
  224. Xyou want to solicit orders, do it in a README file or an About... dialog
  225. Xbox, not in a message that comes up every time the user does something.
  226. XIn other words, treat the net like a PBS station (apologies to those
  227. Xoutside the US.)  I will not accept programs which I feel are excessively
  228. Xcommercial.  I'm aware that commercial demos and shareware are often very
  229. Xuseful (to the users on the net,) which is why I allow them at all.
  230. X
  231. X--------------------
  232. X
  233. XSubject: The structure of comp.binaries.atari.st articles
  234. X
  235. XEach posting in comp.binaries.atari.st is called an "issue"; there are
  236. Xroughly 100 issues to a volume.  The division is arbitrary and may vary.
  237. XThere are two types of articles in comp.binaries.atari.st: binaries and
  238. X"information postings."  They can be distinguished by the subject line:
  239. X
  240. X  Subject: v17INF2: Index and other info
  241. X
  242. XThis first word in the title identifies this as the third info posting of
  243. Xvolume six.  Similarly, the subject line shown below:
  244. X
  245. X  Subject: v17i081: deadwrtr -- Ouija-word processor
  246. X
  247. Xidentifies this as the 81st binary article in Volume 17.  Large programs are
  248. Xbroken up into smaller pieces, and have subject lines that look like
  249. Xthis:
  250. X
  251. X  Subject: v17i041: zx81 -- Timex/Sinclair emulator  part04/39
  252. X
  253. XCertain information about the system configuration required to use the
  254. Xprogram is given on the keywords line.
  255. X
  256. X  Keywords: uuencode, 1meg, medium, high
  257. X
  258. XThis means that the program requires at least one meg of RAM and runs in
  259. Xmedium or high resolution. Following is a list of keywords; new ones may
  260. Xbe added as needed. They are mostly self-explanatory.
  261. X
  262. X  uuencode    - program is uuencoded (UNIX uudecode required to unpack)
  263. X  uue        - program is uuencoded (ST uud required to unpack)
  264. X  arc        - program is archived (arc required to unpack)
  265. X  zoo        - program is a zoo archive (zoo required to unpack)
  266. X  zoo-high    - program is a zoo 2.1 high-compression archive (zoo21 req'd)
  267. X  lharc        - program is an lharc archive (lharc required to unpack)
  268. X  high        - high resolution
  269. X  medium    - medium resolution
  270. X  low        - low resolution
  271. X  1meg        - needs 1 meg of RAM
  272. X
  273. XThe References: line, if present, points to the previous part of a multi-
  274. Xpart program, so that newsreaders (trn, nn, etc.) which can follow threads
  275. Xwill recognize a large program as a single thread.
  276. X
  277. XThe first few lines of an article are auxiliary headers that look like this:
  278. X
  279. X  Submitted-by: jackt@atari.UUCP (Jack Tramiel)
  280. X  Posting-number: Volume 17, Issue 80
  281. X  Archive-name: rsn
  282. X
  283. XThe "Submitted by" is the author of the program.  If you have comments about
  284. Xthe binaries published in comp.binaries.atari.st this is the person to contact.
  285. XWhen possible, this address is in domain form, otherwise it is a UUCP bang
  286. Xpath relative to some major (backbone) site.
  287. X
  288. XThe "Reply-To:" header line in the article's main header points to the
  289. Xsubmitter, to make commenting about binaries easier.
  290. X
  291. XThe second line repeats the volume/issue information for the aide of notes
  292. Xsites and automatic archiving programs.
  293. X
  294. XThe Archive-name is the "official" name of this program in the archive.  Large
  295. Xpostings will have names that look like this:
  296. X
  297. XArchive-name: desktop/part01
  298. X
  299. XSince most archive sites run UNIX, articles are given UNIX-style filenames
  300. Xrather than ST-style filenames.  I do make an effort to keep filenames to
  301. X8 characters or smaller, however.
  302. X
  303. X--------------------
  304. X
  305. XSubject: Reporting and tracking bugs and patches to postings
  306. X
  307. XUpdates to programs are usually announced in comp.sys.atari.st. When
  308. Xlarge changes are made to a program, the entire thing will be reposted
  309. Xto comp.binaries.atari.st.
  310. X
  311. XTo report bugs, contact the person listed in the Submitted-to header.
  312. XOften there is a contact address in a README file, too.  I do not maintain
  313. Xthe programs I moderate, so don't send your bug reports to me.
  314. X
  315. XIf the program documentation mentions some file that isn't included in
  316. Xthe posting (for instance, a font editor's documentation might refer to
  317. Xsome sample fonts), contact the submitter, not me.  I post articles in
  318. Xtheir entirety, so if it isn't posted, I probably don't have it.
  319. SHAR_EOF
  320. chmod 0600 Intro.binaries || echo "restore of Intro.binaries fails"
  321. sed 's/^X//' << 'SHAR_EOF' > Intro.sources &&
  322. XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
  323. XSubject: v05INF1: Introduction to comp.sources.atari.st
  324. XNewsgroups: comp.sources.atari.st,comp.sys.atari.st
  325. XApproved: koreth@twitterpater.eng.sun.com (Steven Grimm)
  326. XExpires: 120days
  327. X
  328. XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
  329. XPosting-number: Volume 5, Info 1
  330. XArchive-name: intro
  331. X
  332. XThis is the first of two introductory articles about comp.sources.atari.st.
  333. XThis one describes how to submit source to the newsgroup, where the
  334. Xarchive sites are, and how to contact them.  The companion article lists
  335. Xall previously-published sources.
  336. X
  337. XI am always looking for suggestions on how to improve the usefulness
  338. Xof the newsgroup, and can be contacted as listed below.
  339. X
  340. X-- Steven Grimm
  341. X   koreth@twitterpater.eng.sun.com
  342. X
  343. X--------------------
  344. X
  345. XSubject: Submitting source for publication
  346. X
  347. XItems intended for posting or queries and problem notes should be sent to
  348. Xatari-sources@twitterpater.eng.sun.com. If you are on a UUCP-only site, you
  349. Xcan send them to sun!twitterpater.eng!atari-sources.
  350. X
  351. XIf you want verification of arrival, so say in a cover note, or at the
  352. Xbeginning of your submission, if it is small.  I try to verify that a
  353. Xprogram works, and if I can't get it to work, I may hold up posting it
  354. Xfor a couple of days.  Please note that, except in rare cases, source
  355. Xwithout documentation will not be published. The backlog from receipt
  356. Xto posting varies from one to four weeks depending mostly on the set
  357. Xof submissions currently in my queue.
  358. X
  359. XI prefer that you submit sources and binaries separately, as it's a
  360. Xpain to separate them, and such submissions are invariably placed on
  361. Xthe back burner.  Sources should be submitted in the same format as
  362. Xbinaries -- uuencoded arc, zoo, or lzh files.  Please use Pierre Dumas'
  363. X"uue" program if possible, as it can correct some common transmission
  364. Xerrors.  Split long submissions up into reasonable (less than 50K)
  365. Xchunks.  "uue" will do this for you, if you use "uue -700 file" to
  366. Xencode.
  367. X
  368. XPlease inform me of any special system requirements, and what development
  369. Xenvironment was used, so that I can properly test your submission and
  370. Xlabel it when I post it.
  371. X
  372. X--------------------
  373. X
  374. XSubject: The structure of comp.sources.atari.st articles
  375. X
  376. XEach posting in comp.sources.atari.st is called an "issue"; there are
  377. Xroughly 100 issues to a volume.  The division is arbitrary and may vary.
  378. XThere are two types of articles in comp.sources.atari.st: sources and
  379. X"information postings."  They can be distinguished by the subject line:
  380. X
  381. X  Subject: v05INF2: Index for Volume 1 and other info
  382. X
  383. XThis first word in the title identifies this as the third info posting of
  384. Xvolume one.  Similarly, the subject line shown below:
  385. X
  386. X  Subject: v05i081: godsrc -- Universe simulator
  387. X
  388. Xidentifies this as the 81st source article in Volume 5.  Large sources are
  389. Xbroken up into smaller pieces, and have subject lines that look like
  390. Xthis:
  391. X
  392. X  Subject: v05i088: decbustr -- VMS clone in ST-LOGO, Part03/08
  393. X
  394. XCertain information about the system configuration required to use the
  395. Xprogram is given on the keywords line.
  396. X
  397. X  Keywords: MWC, Megamax, 1meg, high
  398. X
  399. XThis means that the program compiles with Mark Williams or Megamax C,
  400. Xrequires at least one meg of RAM and only runs in high resolution. Following
  401. Xis a list of keywords; new ones may be added as needed. They are mostly self-
  402. Xexplanatory.
  403. X
  404. X  Alcyon    - Alcyon C (included with Atari developer's kit)
  405. X  MWC        - Mark Williams C
  406. X  Megamax    - Megamax C
  407. X  Laser        - Laser C
  408. X  Lattice    - Lattice C
  409. X  C        - Any C compiler
  410. X  OSS        - OSS Personal Pascal
  411. X  BASIC        - ST BASIC (this is not a joke!)
  412. X  uuencode    - program is uuencoded (uudecode required to unpack)
  413. X  arc        - program is archived (arc required to unpack)
  414. X  high        - high resolution
  415. X  medium    - medium resolution
  416. X  low        - low resolution
  417. X  1meg        - needs 1 meg of RAM
  418. X
  419. XThe References: line, if present, points to the previous part of a multi-
  420. Xpart program, so that newsreaders (trn, nn, etc.) which can follow threads
  421. Xwill recognize a large program as a single thread.
  422. X
  423. XThe first few lines of an article are auxiliary headers that look like this:
  424. X
  425. X  Submitted-by: david@bdt.UUCP (David Beckmeyer)
  426. X  Posting-number: Volume 5, Issue 80
  427. X  Archive-name: micro-rtx
  428. X
  429. XThe "Submitted by" is the author of the program.  If you have comments about
  430. Xthe sources published in comp.sources.atari.st this is the person to contact.
  431. XWhen possible, this address is in domain form, otherwise it is a UUCP bang
  432. Xpath relative to some major (backbone) site.
  433. X
  434. XThe second line repeats the volume/issue information for the aide of notes
  435. Xsites and automatic archiving programs.
  436. X
  437. XThe Archive-name is the "official" name of this source in the archive.  Large
  438. Xpostings will have names that look like this:
  439. X
  440. XArchive-name: desktop/part01
  441. X
  442. XPlease try to use this name when requesting that sources be mailed to you.
  443. XAlso, note that the "part number" given in the title, and the archive name
  444. Xgiven in the auxiliary header need not be identical.
  445. X
  446. XSince most archive sites run UNIX, articles are given UNIX-style filenames
  447. Xrather than ST-style filenames.  I do try to limit filenames to eight
  448. Xcharacters whenever possible, though.
  449. X
  450. X--------------------
  451. X
  452. XSubject: Reporting and tracking bugs and patches to postings
  453. X
  454. XMost of the time, bugs and updates will be posted to comp.sys.atari.st.
  455. XSometimes, "official" updates from the author will be posted submitted to
  456. Xcomp.sources.atari.st so that they are archived with the sources.
  457. X
  458. XSince there is no easy way to apply source code patches on the ST, changes
  459. Xto a program often result in a whole new version being posted.
  460. X
  461. XTo report bugs, contact the person listed in the Submitted-to header.
  462. XOften there is a contact address in a README file, too.  I do not maintain
  463. Xthe sources I moderate, so don't send your bug reports to me.
  464. X
  465. X--------------------
  466. X
  467. XSubject: Listing of archive sites in no particular order
  468. X
  469. X1. Site twitterpater is running an archive server, which automatically answers
  470. X   mail requests.  Send mail to archive-server@twitterpater.eng.sun.com with the
  471. X   word "help" in the message body for more information.  Both the sources
  472. X   and binaries groups are archived on twitterpater.
  473. X2. Unido is the European archive site.  It's running an archive server
  474. X   similar to twitterpater's; send "help" to unido!archive-server for more
  475. X   information.  Unido archives both the sources and binaries groups.
  476. X
  477. XIf you know of additional sites which reliably archive comp.sources.atari.st
  478. X(or comp.binaries.atari.st, for that matter), please tell me so I can add
  479. Xthem to the list.
  480. SHAR_EOF
  481. chmod 0600 Intro.sources || echo "restore of Intro.sources fails"
  482. sed 's/^X//' << 'SHAR_EOF' > Makefile &&
  483. XCFLAGS = -O
  484. XLDFLAGS = -s
  485. X
  486. Xall: unpack.cooked tweak
  487. X
  488. Xtweak: tweak.c
  489. X    $(CC) $(CFLAGS) $(LDFLAGS) tweak.c -o $@
  490. X
  491. Xunpack.cooked: unpack.ms
  492. X    cp -i unpack.cooked unpack.cooked.old
  493. X    tbl unpack.ms | nroff -ms -Tlpr | col > unpack.cooked
  494. X    -diff -c unpack.cooked.old unpack.cooked > unpack.diffs
  495. SHAR_EOF
  496. chmod 0600 Makefile || echo "restore of Makefile fails"
  497. sed 's/^X//' << 'SHAR_EOF' > README &&
  498. XThese are the tools I use to moderate comp.sources.atari.st and comp.binaries.
  499. Xatari.st.  My setup is unusual in that I have an archive server (mail-based) on
  500. Xmy machine, so these tools maintain that as well.
  501. X
  502. XThis depends on there being a "binaries" directory and a "sources" directory,
  503. Xinside of which are files Index.1 (index of the current volume) and Index.2
  504. X(index of all previous articles.)
  505. X
  506. XWhat I generally do when something new comes in:
  507. X
  508. X1. Wait way too long. :)
  509. X2. Unpack the program and test it.
  510. X3. Repackage it if necessary; I try to keep all outgoing messages under 50K,
  511. X   so if necessary I split large postings up into several parts.  Multipart
  512. X   postings go into subdirectories, in files named "part01", "part02", etc.
  513. X   I also repackage if the submitter used a really old archiver with lousy
  514. X   compression, etc.
  515. X4. Run "tweak filename" or, on multipart postings, "tweak part*".  The tweak
  516. X   program and its support files (Header.*) do 90% of the work.
  517. X5. Run "post b programname" or "post s programname" depending on whether the
  518. X   file is going to comp.binaries.atari.st or comp.sources.atari.st.  (Yeah,
  519. X   it should look at the path like tweak does.  Sue me.)  The post script
  520. X   is smart about multipart postings ("programname" can be a directory) and
  521. X   will limit the number of messages that go out per invocation by fiddling
  522. X   with the permissions of parts.  It also copies the files to the appropriate
  523. X   archive directory when everything is posted.
  524. X
  525. XA nightly cron job (update-autoindex) runs a diff of the previous day's index
  526. Xand today's index, mailing the diff results to a list of people who don't
  527. Xreceive the newsgroup but are able to access the mail server.
  528. X
  529. XThe manifest:
  530. X
  531. XChanging.volume
  532. X    A list of what I have to do to change to a new volume in either group.
  533. X    Used to be much longer before I wrote newvol.
  534. X
  535. XHeader.binaries
  536. XHeader.binaries.multi
  537. XHeader.sources
  538. XHeader.sources.multi
  539. Xsedfile
  540. Xseq.binaries
  541. Xseq.sources
  542. X    Used by the tweak program.
  543. X
  544. XIndex.binaries.h
  545. XIndex.sources.h
  546. X    The Index.2 files from each directory with a news header, for posting
  547. X    at the start of each volume.
  548. X
  549. XIntro.binaries
  550. XIntro.sources
  551. Xunpack.ms
  552. X    Introductory blurbs about the two groups.
  553. X
  554. XMakefile
  555. X    The makefile (duh.)  Doesn't build everything.
  556. X
  557. XREADME
  558. X    You are in trouble if you can't figure this one out.
  559. X
  560. Xautoindex-intro
  561. X    A text file that I mail to people who want to know about the automatic
  562. X    notification by mail of new things in the archive.
  563. X
  564. Xdehex.c
  565. X    A utility for decoding the occasional weird-format file from BITNET.
  566. X
  567. Xnewvol
  568. X    A script that does most of the work of switching to a new volume,
  569. X    creating directories and initializing the index files.
  570. X
  571. Xnodocs.b
  572. X    A blurb asking people to include docs with binary submissions.
  573. X
  574. Xpost
  575. X    The aforementioned post script.
  576. X
  577. Xtweak.c
  578. X    The tweak program.
  579. X
  580. Xucat.c
  581. X    A dumb program for gluing together multipart uuencoded submissions
  582. X    that people didn't bother running through a deluxe uuencode like "uue".
  583. X
  584. Xupdate-autoindex
  585. X    Run once a day by cron.
  586. X
  587. Xvolume
  588. X    Output the current volume number (used by tweak and post)
  589. X
  590. Xwrong-group
  591. X    A blurb telling people they should post to comp.sys.atari.st.
  592. X
  593. XThat's about it.  This is automated enough to keep me happy; it could be
  594. Xmade more so (e.g. tweak could put things in an "outgoing" queue that gets
  595. Xscanned daily by a cron job, eliminating the need for manual use of the
  596. X"post" script.)
  597. X
  598. X-Steve
  599. X koreth@eng.sun.com
  600. SHAR_EOF
  601. chmod 0600 README || echo "restore of README fails"
  602. sed 's/^X//' << 'SHAR_EOF' > autoindex-intro &&
  603. XIf you request the autoindex service, you will receive updates to the
  604. Xindex of Atari binaries and sources available on twitterpater.  You can then
  605. Xretrieve desired sources and binaries from the archive server.
  606. X
  607. XFor more information about the archive server itself, or to see what's
  608. Xalready available on the archives, send the word "help" in a mail message
  609. Xto archive-server@twitterpater.eng.sun.com.  If you decide to sign up for
  610. Xautomatic indexes, send a request to autoindex-request@twitterpater.eng.sun.com.
  611. SHAR_EOF
  612. chmod 0600 autoindex-intro || echo "restore of autoindex-intro fails"
  613. sed 's/^X//' << 'SHAR_EOF' > dehex.c &&
  614. X/*
  615. X *  Hex-to-binary utility -- conquer BITNET mailers!!
  616. X *
  617. X *  Restore binary file from a text file with hexadecimal digits
  618. X *
  619. X *  Michal Jaegermann, 19 March 1989
  620. X */
  621. X
  622. X#include <stdio.h>
  623. X#include <string.h>
  624. X#define  BSIZE 128
  625. X
  626. Xmain(argc, argv)
  627. Xint argc;
  628. Xchar **argv;
  629. X{
  630. X    int ch, count = 0;
  631. X    FILE *fin, *fout;
  632. X    char inbuf[BSIZE+2];
  633. X    char outname[14];
  634. X    
  635. X    if (argc != 2) {
  636. X        fprintf(stderr, "usage: %s <infile>\n", argv[0]);
  637. X        exit(1);
  638. X    }
  639. X    
  640. X    if (NULL == (fin = fopen(argv[1],"r"))){
  641. X        fprintf(stderr, "cannot find input file %s\n", argv[1]);
  642. X        exit(1);
  643. X    }
  644. X    /* search for BEGIN line */
  645. X    for(;;) {
  646. X        if (NULL == fgets(inbuf, BSIZE, fin)){
  647. X            fprintf(stderr, "No BEGIN line\n");
  648. X            fclose(fin);
  649. X            exit(1);
  650. X        }
  651. X        sscanf(inbuf, " %12s", outname);
  652. X        if (0 == strcmp("BEGIN", outname)) break;
  653. X        if ('\n' != inbuf[strlen(inbuf) - 1]) {
  654. X            while ('\n' != (ch = getc(fin))) {
  655. X                ; /* eat a remainder of a line */
  656. X            }
  657. X        }
  658. X    }
  659. X    
  660. X    /* get an output file name */
  661. X    sscanf(inbuf, " %*5s %12s", outname);    
  662. X    
  663. X    if (NULL == (fout = fopen(outname,"wb"))){
  664. X        fprintf(stderr, "cannot open output file %s", outname);
  665. X        fclose(fin);
  666. X        exit(1);
  667. X    }
  668. X    
  669. X    /* do the actual job */    
  670. X    while (1 == fscanf(fin, " %02x", &ch)) {
  671. X        putc((char) ch, fout);
  672. X    }
  673. X    fclose(fout);
  674. X
  675. X    /* just a check for completeness */
  676. X    fscanf(fin, " %3s", inbuf);
  677. X    if (0 != strcmp("ND", inbuf)) { /* a little bit of cheating */
  678. X        fprintf(stderr, "%s -- END line not found in %s\n",
  679. X                inbuf, argv[1]);
  680. X    }
  681. X    fclose(fin);
  682. X    exit(0);
  683. X}
  684. SHAR_EOF
  685. chmod 0600 dehex.c || echo "restore of dehex.c fails"
  686. sed 's/^X//' << 'SHAR_EOF' > fcat.c &&
  687. Xmain(argc, argv)
  688. Xchar **argv;
  689. X{
  690. X    char buf[4096];
  691. X    int fd, bred;
  692. X
  693. X    fd = open(argv[1], 0);
  694. X    if (fd < 0)
  695. X        exit(-1);
  696. X
  697. X    while ((bred = read(fd, buf, sizeof(buf))) > 0)
  698. X    {
  699. X        write(1, buf, bred);
  700. X        read(0, buf, 1);
  701. X    }
  702. X}
  703. X
  704. SHAR_EOF
  705. chmod 0600 fcat.c || echo "restore of fcat.c fails"
  706. sed 's/^X//' << 'SHAR_EOF' > tweak.c &&
  707. X#include <stdio.h>
  708. Xchar *index(), *rindex();
  709. X
  710. X/*
  711. X * TWEAK.C
  712. X *
  713. X * Delete mail headers from files and insert UseNet headers.
  714. X *
  715. X * usage:
  716. X *   tweak files
  717. X *
  718. X * The program will prompt for the issue number to start with, keywords,
  719. X * and other information for the header.  Then it will perform substitutions
  720. X * of the following strings from a header file:
  721. X *
  722. X * %v    Volume number of the appropriate newsgroup
  723. X * %V    Volume number, in %02d form
  724. X * %i    Issue number
  725. X * %I    Issue number, in %03d form
  726. X * %t    Title (directory name)
  727. X * %d    Description
  728. X * %P    Part number, in %02d form
  729. X * %N    Number of parts, in %02d form
  730. X * %m    A unique message ID
  731. X * %r    The previous message ID, if any
  732. X * %s    The submitter's name/address
  733. X * %k    Keywords
  734. X */
  735. X
  736. X/* Header file. */
  737. XFILE *head;
  738. X
  739. Xchar title[16], description[60], submitter[70], group[16], keywords[70],
  740. X     seqf[80], fromline[256], id[50], oldid[50];
  741. Xint  parts, issue, part = 1, upind = 1, volume;
  742. X
  743. Xmain(argc, argv)
  744. Xchar **argv;
  745. X{
  746. X    FILE *in, *out;
  747. X    char mailhead[5];
  748. X
  749. X    parts = argc - 1;
  750. X    id[0] = '\0';
  751. X
  752. X    init_info(argv[1]);    /* Query me for stuff */
  753. X    init_net();        /* Open Header file */
  754. X
  755. X    while (part < argc)
  756. X    {
  757. X        printf("Tweaking %s (", argv[part]);
  758. X
  759. X        strcpy(oldid, id);
  760. X        messageid(id);
  761. X        in = fopen(argv[part], "r");
  762. X        out = fopen("#temp", "w");
  763. X/* Automatically sense a mail header, if it's there.  The first four
  764. X   characters will be "From". */
  765. X        fgets(mailhead, 5, in);
  766. X        rewind(in);
  767. X        if (strcmp(mailhead, "From"))
  768. X            printf("no");
  769. X        else
  770. X        {
  771. X            printf("stripping");
  772. X            inhale_header(in);
  773. X        }
  774. X        puts(" header)");
  775. X        exhale_header(out);
  776. X        copy(in, out);
  777. X        fclose(in);
  778. X        fclose(out);
  779. X        unlink(in);
  780. X        rename("#temp", argv[part]);
  781. X        add_index(argv[part]);
  782. X        part++;
  783. X        issue++;
  784. X    }
  785. X    out = fopen(seqf, "w");
  786. X    fprintf(out, "%d\n", issue);
  787. X    fclose(out);
  788. X}
  789. X
  790. X/* Generate a message ID. */
  791. Xmessageid(buf)
  792. Xchar *buf;
  793. X{
  794. X    sprintf(buf, "<%s.%d.%d@twitterpater.eng.sun.com>", group, volume,issue);
  795. X}
  796. X
  797. Xinit_info(file)
  798. Xchar *file;
  799. X{
  800. X    FILE *seq;
  801. X    char buf[30], command[100], *nl;
  802. X
  803. X/* Get the sender's address. */
  804. X    sprintf(fromline, "sed -f /lhome/twitterpater/koreth/Atari/sedfile %s", file);
  805. X    seq = popen(fromline, "r");
  806. X    fgets(fromline, sizeof(fromline), seq);
  807. X    pclose(seq);
  808. X
  809. X    nl = index(fromline, '\n');
  810. X    if (nl != NULL)
  811. X        *nl = '\0';
  812. X    printf("submitter?  RETURN = %s\n", fromline);
  813. X    gets(submitter);
  814. X    if (submitter[0] == '\0')
  815. X        strcpy(submitter, fromline);
  816. X
  817. X    getwd(fromline);
  818. X    nl = rindex(fromline, '/');
  819. X    if (parts > 1)
  820. X    {
  821. X        *nl = '\0';
  822. X        nl = rindex(fromline, '/');
  823. X    }
  824. X    nl++;
  825. X    printf("group (sources, binaries)?  RETURN = %s\n", nl);
  826. X    gets(group);
  827. X    if (group[0] == '\0')
  828. X        strcpy(group, nl);
  829. X
  830. X/* Get the volume number. */
  831. X    sprintf(command, "/lhome/twitterpater/koreth/Atari/volume %s", group);
  832. X    seq = popen(command, "r");
  833. X    if (seq == NULL)
  834. X    {
  835. X        fprintf(stderr, "error running '%s'\n", command);
  836. X        exit(1);
  837. X    }
  838. X    fscanf(seq, "%d", &volume);
  839. X    pclose(seq);
  840. X
  841. X/* Get the issue number. */
  842. X    sprintf(seqf, "/lhome/twitterpater/koreth/Atari/seq.%s", group);
  843. X    seq = fopen(seqf, "r");
  844. X    fscanf(seq, "%d", &issue);
  845. X    fclose(seq);
  846. X    printf("issue number of first part (RETURN=%d)?\n", issue);
  847. X    gets(buf);
  848. X    if (atoi(buf) > 0)
  849. X        issue = atoi(buf);
  850. X    if (parts > 1)
  851. X    {
  852. X        getwd(fromline);
  853. X        file = rindex(fromline, '/')+1;
  854. X    }
  855. X    printf("title (dir. name)? RETURN=%s\n", file);
  856. X    gets(title);
  857. X    if (title[0] == '\0')
  858. X        strcpy(title, file);
  859. X    printf("description?\n%79s\rSubject: vXXiXXX: %s -- ", "partXX/YY",
  860. X                                    title);
  861. X    gets(description);
  862. X    nl = group[0] == 's' ? "arc, uue, C" : "arc, uue";
  863. X    printf("keywords?  RETURN=%s\n", nl);
  864. X    gets(keywords);
  865. X    if (keywords[0] == '\0')
  866. X        strcpy(keywords, nl);
  867. X}
  868. X
  869. Xlethal(error)
  870. Xchar *error;
  871. X{
  872. X    perror(error);
  873. X    exit(-1);
  874. X}
  875. X
  876. X/*
  877. X * Open the header file.
  878. X */
  879. Xinit_net()
  880. X{
  881. X    char filename[80];
  882. X
  883. X    sprintf(filename, "/lhome/twitterpater/koreth/Atari/Header.%s%s", group,
  884. X        parts > 1 ? ".multi" : "");
  885. X    head = fopen(filename, "r");
  886. X    if (head == NULL)
  887. X        lethal("opening Header");
  888. X}
  889. X
  890. Xexhale_header(fp)
  891. XFILE *fp;
  892. X{
  893. X    rewind(head);
  894. X    fprintu(head, fp);
  895. X}
  896. X
  897. Xinhale_header(fp)
  898. XFILE *fp;
  899. X{
  900. X    char linebuf[1024];
  901. X
  902. X    while (strlen(fgets(linebuf, 1024, fp)) > 1);
  903. X}
  904. X
  905. Xcopy(in, out)
  906. XFILE *in, *out;
  907. X{
  908. X    char linebuf[1024];
  909. X
  910. X    while (! feof(in))
  911. X        if (fgets(linebuf, 1024, in))
  912. X            fputs(linebuf, out);
  913. X}
  914. X
  915. Xadd_index(fname)
  916. Xchar *fname;
  917. X{
  918. X    FILE *fp;
  919. X    char ifile[BUFSIZ], filedata[BUFSIZ];
  920. X
  921. X    sprintf(ifile, "/lhome/twitterpater/koreth/Atari/%s/A-Index.1", group);
  922. X
  923. X    fp = fopen(ifile, "a");
  924. X    sprintf(filedata, "v%02di%03d -- %s", volume, issue, title);
  925. X    if (part == 1)
  926. X    {
  927. X        if (parts > 1)
  928. X        {
  929. X            strcat(filedata, "/");
  930. X            strcat(filedata, fname);
  931. X        }
  932. X        fprintf(fp, "%-32s%s\n", filedata, description);
  933. X    }
  934. X    else
  935. X        fprintf(fp, "%s/%s\n", filedata, fname);
  936. X    fclose(fp);
  937. X
  938. X    ifile[strlen(ifile)-1] = '2';
  939. X
  940. X    fp = fopen(ifile, "a");
  941. X    sprintf(filedata, "volume%d/%s", volume, title);
  942. X    if (part == 1)
  943. X    {
  944. X        if (parts > 1)
  945. X        {
  946. X            strcat(filedata, "/");
  947. X            strcat(filedata, fname);
  948. X        }
  949. X        fprintf(fp, "%-32s%s\n", filedata, description);
  950. X    }
  951. X    else
  952. X        fprintf(fp, "%s/%s\n", filedata, fname);
  953. X    fclose(fp);
  954. X}
  955. X
  956. X/*
  957. X * Do string substitutions a la printf.  Read the format from a file, and
  958. X * write to another file.
  959. X */
  960. Xfprintu(infile, outfile)
  961. XFILE *infile, *outfile;
  962. X{
  963. X    char    c;
  964. X
  965. X    while ( (c = getc(infile)) != EOF )
  966. X        if (c == '%')
  967. X            switch (getc(infile)) {
  968. X            case EOF:
  969. X                break;
  970. X
  971. X            case '%':
  972. X                fputc('%', outfile);
  973. X                break;
  974. X
  975. X            case 'v':
  976. X                fprintf(outfile, "%d", volume);
  977. X                break;
  978. X
  979. X            case 'V':
  980. X                fprintf(outfile, "%02d", volume);
  981. X                break;
  982. X
  983. X            case 'i':
  984. X                fprintf(outfile, "%d", issue);
  985. X                break;
  986. X
  987. X            case 'I':
  988. X                fprintf(outfile, "%03d", issue);
  989. X                break;
  990. X
  991. X            case 't':
  992. X                fputs(title, outfile);
  993. X                break;
  994. X
  995. X            case 'd':
  996. X                fputs(description, outfile);
  997. X                break;
  998. X
  999. X            case 'P':
  1000. X                fprintf(outfile, "%02d", part);
  1001. X                break;
  1002. X
  1003. X            case 'N':
  1004. X                fprintf(outfile, "%02d", parts);
  1005. X                break;
  1006. X
  1007. X            case 'm':
  1008. X                fputs(id, outfile);
  1009. X                break;
  1010. X
  1011. X            case 'r':
  1012. X                fputs(oldid, outfile);
  1013. X                break;
  1014. X
  1015. X            case 's':
  1016. X                fputs(submitter, outfile);
  1017. X                break;
  1018. X
  1019. X            case 'k':
  1020. X                fputs(keywords, outfile);
  1021. X                break;
  1022. X            }
  1023. X        else
  1024. X            fputc(c, outfile);
  1025. X}
  1026. X
  1027. SHAR_EOF
  1028. chmod 0600 tweak.c || echo "restore of tweak.c fails"
  1029. sed 's/^X//' << 'SHAR_EOF' > ucat.c &&
  1030. X#include <stdio.h>
  1031. X#include <ctype.h>
  1032. X
  1033. X/*
  1034. X** UCAT.C
  1035. X**
  1036. X** Concatenates several files together, stripping off mail headers and
  1037. X** blank lines.  Useful for putting multi-part uuencoded files together.
  1038. X*/
  1039. X
  1040. Xmain(argc, argv)
  1041. Xchar **argv;
  1042. X{
  1043. X    int i;
  1044. X
  1045. X    for (i=1; i < argc; i++)
  1046. X        catfile(argv[i]);
  1047. X    printf("end\n");
  1048. X}
  1049. X
  1050. Xint begun = 0;
  1051. X
  1052. Xcatfile(name)
  1053. Xchar *name;
  1054. X{
  1055. X    FILE *fp;
  1056. X    char ibuf[256];
  1057. X    int blanked = 0;
  1058. X
  1059. X    fp = fopen(name, "r");
  1060. X    if (fp == NULL)
  1061. X    {
  1062. X        perror(name);
  1063. X        return;
  1064. X    }
  1065. X    while (! feof(fp))
  1066. X    {
  1067. X        if (fgets(ibuf, 256, fp) == NULL)
  1068. X            break;
  1069. X        if (ibuf[1] == '\0')
  1070. X        {
  1071. X            blanked++;
  1072. X            continue;
  1073. X        }
  1074. X        else if (! blanked)
  1075. X            continue;
  1076. X        if (islower(ibuf[0]))
  1077. X        {
  1078. X            if ((! begun) && (! strncmp(ibuf, "begin", 5)))
  1079. X            {
  1080. X                begun++;
  1081. X                printf("%s", ibuf);
  1082. X            }
  1083. X            else if (begun && (! strncmp(ibuf, "table", 5)))
  1084. X                do fgets(ibuf, 256, fp); while(ibuf[0] != 'b');
  1085. X            continue;
  1086. X        }
  1087. X        if (ibuf[strlen(ibuf)-1] == '\n')
  1088. X        {
  1089. X            ibuf[strlen(ibuf)-1] = '\0';
  1090. X            printf("%-70s\n", ibuf);
  1091. X        }
  1092. X        else
  1093. X            printf("%s", ibuf);
  1094. X        
  1095. X    }
  1096. X    fclose(fp);
  1097. X}
  1098. X
  1099. SHAR_EOF
  1100. chmod 0600 ucat.c || echo "restore of ucat.c fails"
  1101. sed 's/^X//' << 'SHAR_EOF' > newvol &&
  1102. X#!/bin/sh
  1103. X
  1104. Xif [ $# -ne 1 -o \( $1 != sources -a $1 != binaries \) ]; then
  1105. X    echo usage: $0 'sources|binaries'
  1106. X    exit 1
  1107. Xfi
  1108. X
  1109. Xvol=`volume $1`
  1110. X
  1111. Xecho Current $1 volume is $vol.
  1112. Xecho Type \"change\" to change, something else to abort.
  1113. X
  1114. Xread ver
  1115. X
  1116. Xif [ "$ver" != "change" ]; then
  1117. X    exit 0
  1118. Xfi
  1119. X
  1120. Xvol=`expr $vol + 1`
  1121. X
  1122. Xecho New volume is $vol.
  1123. X
  1124. Xecho Creating directory.
  1125. Xcd /aux1/archives/comp.$1.atari.st
  1126. Xmkdir volume$vol
  1127. Xchmod 755 volume$vol
  1128. X
  1129. Xecho Adding header to global index.
  1130. Xcat >> Index << EOF
  1131. X
  1132. X-- VOLUME $vol --
  1133. X
  1134. XEOF
  1135. X
  1136. Xecho Creating new index file.
  1137. Xtouch volume$vol/Index
  1138. Xchmod 644 volume$vol/Index
  1139. X
  1140. Xecho Removing old index file links.
  1141. Xcd /lhome/twitterpater/koreth/Atari/$1
  1142. Xrm Index.1 Index.2
  1143. X
  1144. Xecho Making new index file links.
  1145. Xln -s /aux1/archives/comp.$1.atari.st/volume$vol/Index Index.1
  1146. Xln -s /aux1/archives/comp.$1.atari.st/Index Index.2
  1147. X
  1148. Xecho Resetting sequence file.
  1149. Xcd /lhome/twitterpater/koreth/Atari
  1150. Xrm seq.$1
  1151. Xecho 1 > seq.$1
  1152. X
  1153. Xcat << EOF
  1154. XDone.
  1155. X
  1156. X
  1157. X-----------------------
  1158. X
  1159. XNow post introductory articles and index.
  1160. X
  1161. X
  1162. XEOF
  1163. X
  1164. SHAR_EOF
  1165. chmod 0755 newvol || echo "restore of newvol fails"
  1166. sed 's/^X//' << 'SHAR_EOF' > nodocs.b &&
  1167. XPlease include some documentation with submissions to comp.binaries.atari.st.
  1168. XIf your software provides instructions when it's run, please give me a one-
  1169. Xor two-paragraph description of the program so that people will know whether
  1170. Xthey want it or not.  A "README" or .DOC file inside archives is also
  1171. Xcustomary.
  1172. X
  1173. XThanks.
  1174. X
  1175. X-Steven Grimm
  1176. X Moderator, comp.binaries.atari.st
  1177. SHAR_EOF
  1178. chmod 0600 nodocs.b || echo "restore of nodocs.b fails"
  1179. sed 's/^X//' << 'SHAR_EOF' > post &&
  1180. X#!/bin/sh
  1181. X#
  1182. X# post [-d] group filename [maxparts]
  1183. X#
  1184. X# group should be s or b
  1185. X# if filename is a directory then part?? in it are posted
  1186. X#
  1187. X# if maxparts isn't specified, 5 is assumed
  1188. X#
  1189. X# -d means don't send whole article to Europe
  1190. X#
  1191. XBINVOL=volume`volume b`
  1192. XSRCVOL=volume`volume s`
  1193. Xexport NNTPSERVER; NNTPSERVER=exodus
  1194. X
  1195. XEUROPE='Prog-A16@VM.UoGuelph.CA'
  1196. X
  1197. Xif [ x$1 = x-d ]
  1198. Xthen
  1199. X    dontsend=true
  1200. X    shift
  1201. Xelse
  1202. X    dontsend=false
  1203. Xfi
  1204. X
  1205. Xif [ $# -lt 2 ]
  1206. Xthen
  1207. X    echo usage: $0 '[-d] s|b filename [maxparts]'
  1208. X    exit 1
  1209. Xfi
  1210. X
  1211. Xif [ $# -eq 3 ]
  1212. Xthen
  1213. X    maxparts=$3
  1214. Xelse
  1215. X    maxparts=5
  1216. Xfi
  1217. X
  1218. Xif [ -d $2 ]
  1219. Xthen
  1220. X    for i in $2/part??
  1221. X    do
  1222. X        if ls -l $i | grep -v '^....r..r.. '
  1223. X        then
  1224. X            if [ $maxparts -eq 0 ]
  1225. X            then
  1226. X                exit 0
  1227. X            else
  1228. X                maxparts=`expr $maxparts - 1`
  1229. X            fi
  1230. X            if inews -h $i
  1231. X            then
  1232. X                true
  1233. X            else
  1234. X                echo 'Inews error.  Aborting.'
  1235. X                exit 1
  1236. X            fi
  1237. X            if [ $dontsend = false ]
  1238. X            then
  1239. X                SUBJECT="`grep '^Subject:' $i |cut -d' ' -f2-`"
  1240. X                Mail -s "$SUBJECT" $EUROPE < $i
  1241. X            else
  1242. X                head $i | Mail -s 'Atari header' $EUROPE
  1243. X            fi
  1244. X            chmod 644 $i
  1245. X        fi
  1246. X    done
  1247. X    chmod 755 $2
  1248. Xelse
  1249. X    if inews -h $2
  1250. X    then
  1251. X        true
  1252. X    else
  1253. X        echo 'Inews error.  Aborting.'
  1254. X        exit 1
  1255. X    fi
  1256. X    if [ $dontsend = false ]
  1257. X    then
  1258. X        SUBJECT="`grep '^Subject:' $2 | cut -d' ' -f2-`"
  1259. X        Mail -s "$SUBJECT" $EUROPE < $2
  1260. X    else
  1261. X        head $2 | Mail -s 'Atari header' $EUROPE
  1262. X    fi
  1263. X    chmod 644 $2
  1264. Xfi
  1265. X
  1266. Xif [ $1 = s ]
  1267. Xthen
  1268. X    cp -pr $2 /aux1/archives/comp.sources.atari.st/$SRCVOL
  1269. X    rm -r $2
  1270. Xelse
  1271. X    cp -pr $2 /aux1/archives/comp.binaries.atari.st/$BINVOL
  1272. X    rm -r $2
  1273. Xfi
  1274. X
  1275. Xunexpand -a A-Index.1 >> Index.1
  1276. Xrm A-Index.1
  1277. Xunexpand -a A-Index.2 >> Index.2
  1278. Xrm A-Index.2
  1279. SHAR_EOF
  1280. chmod 0700 post || echo "restore of post fails"
  1281. sed 's/^X//' << 'SHAR_EOF' > sedfile &&
  1282. X/^From: /bfoo
  1283. Xd
  1284. X:foo
  1285. X/^From: /s/^From: \(.*\)  *<\(.*\)>/From: \2 (\1)/
  1286. X/^From: /s/^From: \(.*\)!\(.*\)@\(.*\) (\(.*\))/From: \3!\1!\2 (\4)/
  1287. X/^From: /s/^From: //
  1288. X/  /s/ *)/)/g
  1289. X/(".*")/s/("\(.*\)")/(\1)/
  1290. X/LarsErikOsterud/s/Erik/-Erik /
  1291. X/uace0/s/ATARI Computer Enthusiasts/Michael B. Vederman/
  1292. SHAR_EOF
  1293. chmod 0600 sedfile || echo "restore of sedfile fails"
  1294. sed 's/^X//' << 'SHAR_EOF' > seq.binaries &&
  1295. X69
  1296. SHAR_EOF
  1297. chmod 0600 seq.binaries || echo "restore of seq.binaries fails"
  1298. sed 's/^X//' << 'SHAR_EOF' > seq.sources &&
  1299. X98
  1300. SHAR_EOF
  1301. chmod 0600 seq.sources || echo "restore of seq.sources fails"
  1302. sed 's/^X//' << 'SHAR_EOF' > unpack.ms &&
  1303. X.nr PS 12
  1304. X.nr VS 12
  1305. X.ND
  1306. X.if n \{
  1307. X.nr LL +1.5i
  1308. X.na
  1309. X.nh \}
  1310. X.ds LH Using Binaries
  1311. X.ds CH
  1312. X.ds RH -%-
  1313. X.DS C
  1314. XHOW TO USE COMP.BINARIES.ATARI.ST
  1315. X
  1316. Xby Steven Grimm
  1317. X
  1318. XLast update: August 13, 1991
  1319. X.DE
  1320. X.sp 2
  1321. X.NH
  1322. XWelcome to comp.binaries.atari.st!
  1323. X.PP
  1324. XHere you'll find a wealth of software for your Atari ST, from games to
  1325. Xspreadsheets to compilers -- all free and yours for the taking.  This
  1326. Xdocument describes exactly how comp.binaries.atari.st works, and tells you
  1327. Xhow to get started.  Don't worry if some of this seems
  1328. Xcomplex; it'll all become clear after a little use.  The section "Getting
  1329. Xstarted" at the end of this document is worth reading if you're new to
  1330. Xall this.  It gives you (reasonably) step-by-step instructions for obtaining
  1331. Xthe software you'll need to get going.
  1332. X.NH
  1333. XWhat are binaries?
  1334. X.PP
  1335. XBinaries are files that contain information other than normal text.  Usually,
  1336. Xa binary that is posted to the net will contain executable (program) files.
  1337. XBinaries are distinct from \fIsources\fR, which are the human-readable text
  1338. Xfiles that are interpreted by a computer and used to produce binaries.  Sources
  1339. Xcan be modified with relatively little effort, and are usually pretty easy
  1340. Xto read.  Binaries are not intended to be viewed by a human.
  1341. X.NH 2
  1342. XUuencoding
  1343. X.PP
  1344. XThe programs which transfer network news messages (and electronic mail) are
  1345. Xnot always capable of handling a pure binary file.  They are designed to handle
  1346. Xtextual messages, and the odd symbols and characters in a binary cause them
  1347. Xto become confused, and often to mangle the binaries.  To avoid this problem,
  1348. Xa method called \fIuuencoding\fR is used.  Uuencoding translates a binary file
  1349. Xinto text characters, so that the news and mail transport programs won't mess
  1350. Xup.  The disadvantages are that uuencoded files are about 30% bigger than
  1351. Xthe raw binary files they represent, and that you have to go through one
  1352. Xextra step to get the binaries to work on your computer.
  1353. X.NH 2
  1354. XArchives or "arc files"
  1355. X.PP
  1356. XUsually, a program will need more than one file to work properly.  The extra
  1357. Xfiles might be data files, help files, or maybe some instructions for the
  1358. Xuser.  In order to easily package multiple files together in one binary file,
  1359. Xa program called "arc" (short for "archiver") is used.  Arc also compresses
  1360. Xall the files as it packages them, so that the arcfile take up less disk space
  1361. X(and takes less time to download!) than it would if its contents were just
  1362. Xthrown together.
  1363. X.PP
  1364. XTo confuse matters even more, two new archive programs called "zoo"
  1365. Xand "lharc" can also be
  1366. Xused to achieve the same effect.  Zoo is superior to arc in some respects,
  1367. Xslightly inferior in others, as is lharc.  Unfortunately, you can't unpack
  1368. Xa zoo archive with arc or lharc, or vice versa (arc and lharc are similarly
  1369. Xincompatible with each other.)
  1370. X.NH 2
  1371. XUSENET articles
  1372. X.PP
  1373. XThe USENET has groups designed especially for transmission of binary files.
  1374. XThey are usually called something like "comp.binaries.x," where x is the type
  1375. Xof machine that the programs will run on.  For Atari ST owners, the group to
  1376. Xwatch is comp.binaries.atari.st.  Most of the binaries groups (including the
  1377. XAtari binaries group) are \fImoderated\fR, which means that you can't send
  1378. Xa program directly to everyone on the network.  Instead, you send it to someone
  1379. Xin charge of the group (the \fImoderator\fR), who makes sure that your
  1380. Xprogram works and contains the proper documentation (or that the lack of
  1381. Xdocumentation is announced), and that it's in the correct format to be sent
  1382. Xout to the rest of the USENET.
  1383. X.PP
  1384. XOne of the restrictions of the USENET is that articles can only be a certain
  1385. Xlength.  If a binary is longer than that, it must be split up into several
  1386. Xparts, each no longer than 45000 bytes or so.  This introduces yet another
  1387. Xobstacle to people who want to transform the articles into a useful form,
  1388. Xbut it can't really be helped until the USENET starts running much more
  1389. Xadvanced news transmission software.  Also, some particularly long programs
  1390. Xmay be posted over the course of several days; otherwise the net would be
  1391. Xoverloaded with lots of huge messages, and people would complain.
  1392. X.PP
  1393. XUSENET binaries are grouped into \fIvolumes\fR, each containing about 100
  1394. Xarticles.  This is to make life easier for people who are trying to keep
  1395. Xtrack of which articles have been posted.  When a new volume is started,
  1396. Xthe moderator will usually post introductory articles, including a list
  1397. Xof previously published articles.
  1398. X.NH
  1399. XHow do I get binaries?
  1400. X.PP
  1401. XThere are two ways to get binaries: first, by reading the USENET newsgroup
  1402. Xcomp.binaries.atari.st; you will see new articles within a week (usually
  1403. Xmuch less) of the time they were sent out by the moderator.  If, for some
  1404. Xreason, your site doesn't receive comp.binaries.atari.st, or if you want
  1405. Xto look through previously posted articles, site twitterpater.eng.sun.com has all
  1406. Xthe binaries stored in its archives.
  1407. X.PP
  1408. XThe other way to get binaries is to request them from twitterpater's archive
  1409. Xserver.  The archive server is a program that intercepts incoming mail
  1410. Xmessages and looks for commands inside them.  You can tell it to list
  1411. Xthe available binaries, give you help, or send whichever files you're
  1412. Xinterested in.  The requested files will be mailed to you.  One thing to
  1413. Xbe careful of is that multi-part postings aren't placed in the archives
  1414. Xuntil all their parts have been sent out to the USENET at large.  This is
  1415. Xto prevent people from requesting all 99 parts of a program the first day
  1416. Xit appears, thus overloading the net and defeating the purpose
  1417. Xof piece-by-piece posting.
  1418. X.PP
  1419. XTo find out more about the archive server, send a mail message containing
  1420. Xthe word "help" to archive-server@twitterpater.eng.sun.com.  Talk to an
  1421. Xadministrator
  1422. Xat your site if that mail address doesn't work.  If you don't get any
  1423. Xresponse from the archive server within a few days, something may be
  1424. Xwrong; mail archive-manager@twitterpater.eng.sun.com to report the problem.
  1425. X.PP
  1426. XThere are other archive sites, too, such as atari.archive.umich.edu; they
  1427. Xcontain most of the comp.binaries.atari.st software as well as some additional
  1428. Xprograms that have not appeared on the newsgroup.  Some sites, such as
  1429. Xatari.archive, also offer something called "anonymous ftp" if you're on the
  1430. XInternet.  Say "ftp atari.archive.umich.edu", and if you connect, use
  1431. X"anonymous" for a username, and your username for a password.  See the
  1432. Xftp documentation at your site for more information.  A recent, but
  1433. Xpossibly incorrect, list of alternate archive
  1434. Xsites appears at the end of this article.
  1435. XPlease send me mail if you know of any that aren't mentioned here,
  1436. Xor if my list is incorrect.  Note that twitterpater does not offer anonymous
  1437. Xftp, as it's on a network that's segregated from the Internet.
  1438. X.PP
  1439. XTwitterpater also offers an "auto-index" service, for people who don't have
  1440. Xaccess to the USENET groups.  If you request autoindex service, you will
  1441. Xreceive copies of the archive-server's index files for the binaries and
  1442. Xsources groups whenever new files are added.  Note that if your site gets
  1443. Xcomp.binaries.atari.st, requesting autoindex is pointless and a waste of
  1444. Xnet bandwidth.  Send mail to autoindex-request@twitterpater.eng.sun.com if
  1445. Xyou'd like to sign up.
  1446. X.NH
  1447. XHow do I decode the binaries?
  1448. X.PP
  1449. XAs stated above, turning binaries from USENET articles into a more useful
  1450. Xform can be a multi-step process.  At the least, you will need the
  1451. X\fBuudecode\fR program; it is standard software on most
  1452. X.UX
  1453. Xsystems and is available in a couple of forms on the Atari.  Versions for
  1454. Xother operating systems do exist, and can certainly be written with little
  1455. Xeffort.  \fBArc\fR is available for
  1456. X.UX
  1457. Xand other operating systems, but is not standard software.  In any case,
  1458. Xyou will want at least \fBarc\fR on your Atari.
  1459. X.PP
  1460. XUsually, things are been small enough to fit in one article, but you
  1461. Xwill almost certainly want to try something larger eventually.  The Atari
  1462. X"uud" program (whose source code, also suitable for compilation on
  1463. X.UX
  1464. Xsystems, is available in the sources archive) is capable of easily
  1465. Xdecoding multi-part uuencoded files.  Near the top of each part (except
  1466. Xthe first) will be a line like
  1467. X.DS
  1468. Xbegin part c foobar.uac
  1469. X.DE
  1470. X.PP
  1471. XRename each file (except part 1, which can be named "part01" or just
  1472. Xabout anything else) to the name at the end of this "begin" line, in
  1473. Xthis case "foobar.uac".  Then run uud on the file containing part 1;
  1474. Xit contains instructions to cause uud to look for the other parts.
  1475. XIf you have a text editor or a
  1476. X.UX
  1477. Xstyle \fBcat\fR program, you can just stick all the parts together
  1478. Xin order and run uud on the resulting (big) file; it will try to go
  1479. Xon in the first file if it can't find the next part in a separate file.
  1480. XNote that \fBuud\fR won't warn you if it's overwriting an existing
  1481. Xfile, so don't give any of the parts the same name as the file that's
  1482. Xbeing extracted from them!
  1483. X.PP
  1484. XOn
  1485. X.UX
  1486. Xsystems, you can also say (for instance) "cat part* | uud -" without
  1487. Xrenaming anything.
  1488. X.PP
  1489. XIf you don't have \fBuud\fR or would prefer to decode your binaries
  1490. Xon your larger news computer, the procedure is somewhat more complex.
  1491. XPlain vanilla \fBuudecode\fR doesn't know about multi-part uuencoded
  1492. Xfiles, so you have to fool it into thinking that everything is in one
  1493. Xpart.  First, stick all the parts together (using \fBcat\fR on
  1494. X.UX ).
  1495. XEdit the resulting file.  Now remove all the extraneous lines of text
  1496. Xin between the parts -- this includes mail headers, any text, lines
  1497. Xof the form "include foobar.uad," "table" lines and the lists of
  1498. Xcharacters following them, and "begin" lines other than the one at
  1499. Xthe beginning of part 1.  Once you have converted all the parts into
  1500. Xa big uuencoded mass (with no blank lines!), the regular \fBuudecode\fR
  1501. Xprogram will work.
  1502. X.PP
  1503. XObviously, this is something of a hassle, and the recommended procedure
  1504. Xis to try to install \fBuud\fR on your large computer.  You'll usually
  1505. Xwant to minimize the amount of data you have to send to your Atari,
  1506. Xsince you'll most likely be downloading it at a relatively low speed,
  1507. Xand the uudecoded .arc file is the smallest thing you can download.
  1508. X.PP
  1509. XZoo is available from the archives.  It is simple to use; refer to
  1510. Xthe documentation included in zoobin.arc (yes, you need to use arc to
  1511. Xextract zoo!) for more information.  The uudecoding process is the
  1512. Xsame for zoo and arc files.  A new version of zoo, 2.1, is in volume
  1513. X15 of the binaries archive.  You'll need the old version of zoo to
  1514. Xunpack the new one.  Zoo 2.1 is necessary to unpack "zoo-high" format
  1515. Xarchives (look at the Keywords: line of the article you're unpacking.)
  1516. X.PP
  1517. XTo extract lharc files, you should first try the program "lhx104" in
  1518. Xvolume 15 of the comp.binaries.atari.st archives.  It's not in compressed
  1519. Xform, so all you'll need to do is uudecode the .TTP file.  It will
  1520. Xunpack .LZH files.
  1521. X.PP
  1522. XMost archives contain documentation; refer to the instructions in a
  1523. Xspecific program for usage information and the like.  If you have problems
  1524. Xwith a particular program, send mail to the submitter (listed near the
  1525. Xtop of each part.)  The moderator doesn't have time to become very
  1526. Xfamiliar with all the programs that are posted, so the submitter will
  1527. Xprobably be much more helpful.
  1528. X.NH
  1529. XGetting started
  1530. X.PP
  1531. XA version of \fBuudecode\fR written in ST BASIC is available in twitterpater's
  1532. Xarchives (see above).  It is in volume 1 of the comp.sources.atari.st
  1533. Xdirectory (note that that's \fIsources\fR and not binaries).  To obtain it,
  1534. Xsend mail to archive-server@twitterpater.eng.sun.com, with the following
  1535. Xmessage body:
  1536. X.DS
  1537. Xsend sources/volume1 basic-uud
  1538. X.DE
  1539. X.PP
  1540. XThe archive server should reply quickly (the actual amount of time it takes
  1541. Xdepends on how your site is connected to the outside world) with the BASIC
  1542. Xprogram.  Take off all the mail headers and introductory text (everything
  1543. Xabove the line that says "10 ' UUDECODE PROGRAM") and bring the file to your
  1544. XST using your communications program.  (Refer to its documentation for specific
  1545. Xinstructions about that; every program does it in a different way.)
  1546. X.PP
  1547. XOnce you
  1548. Xhave basic-uud, you should get all six parts of the program "starter" from
  1549. Xvolume 16 of the binaries archive.  The "starter" program, when run, writes
  1550. Xout copies of the utilities you'll need to start decoding and unpacking
  1551. Xcomp.binaries.atari.st articles.  Send six more mail messages to
  1552. Xarchive-server@twitterpater.eng.sun.com, each with one of the following
  1553. Xrequests:
  1554. X.DS
  1555. Xsend binaries/volume16/starter part01
  1556. Xsend binaries/volume16/starter part02
  1557. Xsend binaries/volume16/starter part03
  1558. Xsend binaries/volume16/starter part04
  1559. Xsend binaries/volume16/starter part05
  1560. Xsend binaries/volume16/starter part06
  1561. X.DE
  1562. X.PP
  1563. XYou need to send separate mail messages because some mail systems won't handle
  1564. Xvery large pieces of mail, and if you requested all six parts at once, you
  1565. Xmight never see a reply!
  1566. X.PP
  1567. XCopy all six parts of starter, in order, into a single large file.  Then go
  1568. Xthrough
  1569. Xand edit out the extra text between parts.  Everything between (and including)
  1570. Xthe "include" line at the end of a part and the "begin" line at the beginning
  1571. Xof the next part should be removed.  (Blank lines are bad, too; everything
  1572. Xfrom the "begin" at the top of the first part to the "end" at the end should
  1573. Xbe a solid row of 'M' characters along the left side, except a couple lines
  1574. Xabove the "end.")
  1575. X.PP
  1576. XUse the BASIC program to uudecode the resulting file, then run starter.tos.
  1577. XIt will write out copies of arc, zoo, lharc, uue, and uud (all described above.)
  1578. XYou're ready to begin!
  1579. X.sp
  1580. X.NH
  1581. XList of archive sites
  1582. X.PP
  1583. XNote: I have not verified these, so this list may be wrong.
  1584. XMail servers usually respond to the word "help"
  1585. Xalone in a mail message.  Some of the sites listed below may not contain
  1586. Xfull archives of comp.binaries.atari.st, and some may have other files.
  1587. X.TS
  1588. Xl l l .
  1589. XAddress    Type    Comments
  1590. X_
  1591. Xwuarchive.wustl.edu    ftp,nfs
  1592. Xux.acss.umn.edu    ftp    TeX, GNU
  1593. Xatari.archive.umich.edu    ftp    Mail server may also exist
  1594. Xhim1.cc.umich.edu    ftp    cd to pc7: directory
  1595. Xdsrgsun.ces.cwru.edu    ftp    GNU and Minix archives also
  1596. Xxanth.cs.odu.edu    ftp
  1597. Xslug.pws.bull.com    ftp    comp.sources.atari.st only
  1598. Xrusmv1.rus.uni-stuttgart.de    ftp    European ftp site
  1599. Xarchive-server@
  1600. X     twitterpater.eng.sun.com    mail    Official archives
  1601. Xarchive@softvax.radc.af.mil    mail
  1602. Xunido!archive-server    mail    European archives
  1603. Xst_requests@
  1604. X     n6vbg.hamavnet.com    mail    Dialup access at (714) 989-4276
  1605. Xmarks%mgse@rex.cs.tulane.edu    uucp    Ask your site administrator
  1606. X.TE
  1607. SHAR_EOF
  1608. chmod 0600 unpack.ms || echo "restore of unpack.ms fails"
  1609. sed 's/^X//' << 'SHAR_EOF' > update-autoindex &&
  1610. X#!/bin/sh
  1611. X
  1612. Xfor i in sources binaries; do
  1613. X    cd /aux1/archives/comp.$i.atari.st
  1614. X    diff -c Index.old Index | grep -v '^No diff' > /tmp/ai$$
  1615. X    if [ -s /tmp/ai$$ ]; then
  1616. X        cat - /tmp/ai$$ << EOF | /usr/lib/sendmail -t -farchive-server
  1617. XFrom: archive-server
  1618. XTo: autoindex
  1619. XSubject: Changes to $i index
  1620. X
  1621. XEOF
  1622. X    fi
  1623. X    rm /tmp/ai$$
  1624. X    cp Index Index.old
  1625. Xdone
  1626. SHAR_EOF
  1627. chmod 0700 update-autoindex || echo "restore of update-autoindex fails"
  1628. sed 's/^X//' << 'SHAR_EOF' > volume &&
  1629. X#!/bin/sh
  1630. Xbasepath=/aux1/archives
  1631. X
  1632. Xif [ $# -ne 1 ]; then
  1633. X    echo usage: $0 'binaries|sources' 1>&2
  1634. X    exit 1
  1635. Xfi
  1636. X
  1637. Xcase $1 in
  1638. X    s*) group=comp.sources.atari.st ;;
  1639. X    b*) group=comp.binaries.atari.st ;;
  1640. X    *) echo usage: $0 'binaries|sources' 1>&2
  1641. X       exit 1 ;;
  1642. Xesac
  1643. X
  1644. Xcd $basepath/$group
  1645. X
  1646. X/bin/ls -d volume* | sed s/volume// | sort -nr | sed '2,$d'
  1647. SHAR_EOF
  1648. chmod 0755 volume || echo "restore of volume fails"
  1649. sed 's/^X//' << 'SHAR_EOF' > wrong-group &&
  1650. XYou should post requests for information or software, or other articles
  1651. Xcontaining things other than programs, to comp.sys.atari.st.
  1652. X
  1653. XComp.sources.atari.st and comp.binaries.atari.st are specifically for
  1654. Xdistribution of Atari ST software in source and binary form, respectively.
  1655. XBoth groups are moderated, which means that when you post an article to
  1656. Xeither of them, it's mailed to the moderator (me) and not shown to anyone
  1657. Xelse on the net.
  1658. SHAR_EOF
  1659. chmod 0600 wrong-group || echo "restore of wrong-group fails"
  1660. exit 0
  1661.  
  1662.